/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hudsonlab.control;

import hudsonlab.HudsonLab;
import hudsonlab.dao.ClientesJpaController;
import hudsonlab.entity.Clientes;
import hudsonlab.exceptions.NonexistentEntityException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Grupo2
 */
public class TransaccionControl {
    
    private ClientesJpaController dao = new ClientesJpaController();
    private DateFormat formato=new SimpleDateFormat("MM/dd/yyyy");

    TransaccionControl(String prueba) {
        dao=new ClientesJpaController(prueba);
    }

    public TransaccionControl() {
        
    }
    
    public boolean ejecutar(String opcion, String id, int monto) {
        
        if (monto < 0) {
            hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "El valor  ingresado no puede ser negativo", 0);
            
            return false;
        }
        
        if ("acreditar".equals(opcion)) {
            if (!(monto >= 10000 && monto % 10000 == 0 && monto <= 1000000)) {
                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "El valor no esta en el rango permitido", 0);
                
                return false;
            }
                    Clientes c = dao.findClientes(id);
monto+=c.getSaldo();
            c.setSaldo(monto);
            try {
                dao.edit(c);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(TransaccionControl.class.getName()).log(Level.SEVERE, null, ex);
                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "El usuario no existe", 0);
                
                return false;
            } catch (Exception ex) {
                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "Ha ocurrido un error inesperado", 0);
                
                Logger.getLogger(TransaccionControl.class.getName()).log(Level.SEVERE, null, ex);
                return false;
            }
            String mensaje="Fecha: "+formato.format(Calendar.getInstance().getTime()) +"\n"+"Usuario "+c.getNombreusuario()+"\nSaldo actual: "+Integer.toString(c.getSaldo())+"\nSaldo en Canje: "+Integer.toString(c.getSaldocanje());
        HudsonLab.getInstance().mostrarMensaje("Informacion", mensaje,1);
            return true;
        } else if ("debitar".equals(opcion)) {
                    Clientes c = dao.findClientes(id);

            if (!(monto <= c.getSaldocanje() && monto >= 10000 && monto <= 400000)) {
                                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "El valor no esta en el rango permitido", 0);

                return false;
            }
            c.setSaldo(c.getSaldo() - monto);
            try {
                dao.edit(c);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(TransaccionControl.class.getName()).log(Level.SEVERE, null, ex);
                                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "El usuario no existe", 0);

                return false;
            } catch (Exception ex) {
                Logger.getLogger(TransaccionControl.class.getName()).log(Level.SEVERE, null, ex);
                                hudsonlab.HudsonLab.getInstance().mostrarMensaje("Mensaje de Error", "Ha ocurrido un error inesperado", 0);

                return false;
            }
            String mensaje="Fecha: "+formato.format(Calendar.getInstance().getTime()) +"\n"+"Usuario "+c.getNombreusuario()+"\nSaldo actual: "+Integer.toString(c.getSaldo())+"\nSaldo en Canje: "+Integer.toString(c.getSaldocanje());
        HudsonLab.getInstance().mostrarMensaje("Informacion", mensaje,1);
            return true;
        }else if("consulta".equals(opcion)){
                    Clientes c = dao.findClientes(id);

            String mensaje="Fecha: "+formato.format(Calendar.getInstance().getTime()) +"\n"+"Usuario "+c.getNombreusuario()+"\nSaldo actual: "+Integer.toString(c.getSaldo())+"\nSaldo en Canje: "+Integer.toString(c.getSaldocanje());
        HudsonLab.getInstance().mostrarMensaje("Informacion", mensaje,1);
        return true;
        
        
        
    }else {
                    HudsonLab.getInstance().mostrarMensaje("Mensaje de error", "Opcion Invalida",0);

            return false;
        }
    }
}
